<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 小明
        // var box1 = 12;

        // // 小红 
        // var box1 = 5;

        // console.log(box1);


        // let 代替var  从2023年2月24 15:26开始 - 以后， 都必须给我用let声明变量！


        // let box2 = 666;

        // console.log(box2);

        // let box2 = 888;

        // console.log(box2);


        // es6:let特点
        // 1. 不允许重复声明变量名。
        // 2. let有块级作用域


        //ES5 只有函数才能产生作用域，{不产生作用域}
        // {
        //     var a = 12;
        // }

        // console.log(a);

        // let 可以支持 块级作用域。 {} 范围 称为块
        // {
        //     let a = 666;

        //     console.log(a);
        // }

        // console.log(a);

        // function fn(){
        //     let b = 888;

        //     console.log(b);
        // }

        // fn()
        // console.log(b);


        // var a = 12;


        // es5 变量覆盖
        // {
        //     var a=5;
        // }
        // console.log(a);

        // es6 - 作用域只对{}块级范围有效
        // let a = 12;
        // {
        //     let a = 5;
        // }

        // console.log(a);


        
        var arr = [1,2,3];
        //ES5
        // for循环的变量i会被泄露到全局
        // for(var i=0;i<arr.length;i++){
        //     console.log(arr[i]);
        // }
        // console.log(i);

        // ES6
        // 变量i没有泄露
        // for(let i=0;i<arr.length;i++){
        //     console.log(arr[i]);
        // }
        // console.log(i); //Uncaught ReferenceError: i is not defined

   


    </script>
</body>
</html>